﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

namespace ShopNet.Util
{
    public static class Funcoes
    {

        public static bool Between<T>(this T source, T low, T high) where T : IComparable
        {
            return source.CompareTo(low) >= 0 && source.CompareTo(high) <= 0;
        }

        public enum TipoMensagem
        {
            Ok,
            Erro,
            Warning,
            Info
        }

        public static void Mensagem(TipoMensagem tipoMensagem, HtmlGenericControl spamMensagem, string mensagem)
        {
            spamMensagem.Attributes.Remove("class");
            spamMensagem.Attributes.Add("style", "display:block;");
            switch (tipoMensagem)
            {
                case TipoMensagem.Ok:
                    spamMensagem.Attributes.Add("class", "successNotification");
                    spamMensagem.InnerText = mensagem;
                    break;
                case TipoMensagem.Erro:
                    spamMensagem.Attributes.Add("class", "failureNotification");
                    spamMensagem.InnerText = mensagem;
                    break;
                case TipoMensagem.Warning:
                    spamMensagem.Attributes.Add("class", "successNotification");
                    spamMensagem.InnerText = mensagem;
                    break;
                case TipoMensagem.Info:
                    spamMensagem.Attributes.Add("class", "successNotification");
                    spamMensagem.InnerText = mensagem;
                    break;

            }
        }

        public static void SetCssClassError(this object controle)
        {
            if (controle is WebControl)
            {
                WebControl ctrl = (WebControl)controle;

                int pos = ctrl.CssClass.IndexOf("error");
                string css = ctrl.CssClass;
                css = pos <= 0 ? css + " error" : css;
                ctrl.CssClass = css;
            }
        }

        public static Control FindControlRecursive(this Control ctrl, string controlId)
        {
            if (string.Compare(ctrl.ID, controlId, true) == 0)
            {
                // We found the control! 
                return ctrl;
            }
            else
            {
                // Recurse through ctrl's Controls collections 
                foreach (Control child in ctrl.Controls)
                {
                    Control lookFor = FindControlRecursive(child, controlId);
                    if (lookFor != null) return lookFor; // We found the control 
                } // If we reach here, control was not found 
                return null;
            }
        }
    }
}